/**
 * node中的模块是核心
 * 模块规范有哪些?为什么要有这些规范？
 *  1. 开发可能会有命名冲突，使用命名空间防止冲突（调用不方便），单例模式
 *  2. 闭包模式（IIFE）实现模块化
 *  3. seajs（依赖就近，按需加载），requirejs（依赖前置）
 *  4. es6 module：import export
 *  5. commonjs规范（nodejs默认支持的）：require，module.exports
 *  6. umd（兼容上面三种模式），一般类库会采用这种方式
 *
 * commonjs规范规定每个文件都是一个模块
 *  要通过module.exports导出给别人使用的结果
 *  要使用require来引用需要的模块
 *
 * node中的模块：
 *  1.内置模块（fs，path，util，vm等），不需要下载安装，可以直接引用
 *  2.自定义模块
 *  3.npm安装的第三方模块
 *
 */

// path.resolve() 和 path.join(), 如果遇到 /,resolve 会解析成根路径，join则是拼在一起

// vm模块：虚拟机模块,创建一个执行上下文
// eval()
// new Function(log), 也可以产生一个执行环境，缺点就是会产生一个函数包装
// 模板引擎：new Function()+with

const vm = require('vm');

let a = 100;
const log = `console.log(a)`;

vm.runInThisContext(log);
